package gui;

import java.awt.Component;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

import validacion.MensajesValidacion;
import logica.Adquisidor_Electro;
import logica.Medicion;
import electro.Electrocardiograma;

public class Ingreso_Datos_Medicion extends JPanel {

	private static final long serialVersionUID = 1L;
	private JPanel[] paneles;
	private final int c_paneles = 5; 
	
	private JButton boton_comenzar;
	private JLabel  label;
	private String  texto = "<html>Si posee algun Electrocardiografo, " +
			"realize su medicion y luego haga <br>click en 'Comenzar " +
			"Medicion' para obtener los datos</html>";
	
	
	private Electrocardiograma electro;
	// Incluir referencia al adquisidor de datos del electro	
	private Adquisidor_Electro adq; 
	
	private ImageIcon imagen;
	private PantallaCargando pc;	
	public Ingreso_Datos_Medicion(){
		setLayout(new GridLayout(5, 1));

		electro = new Electrocardiograma();
		adq = new Adquisidor_Electro();
		
		boton_comenzar  = new JButton("Comenzar medicion");
		boton_comenzar.addActionListener( new comenzar_action());
		
		label = new JLabel(texto);
		
		paneles = new JPanel[5];
		for(int i=0;i<c_paneles; i++){
			paneles[i] = new JPanel();
			if(i == 0){
				paneles[i].add(label);
			}
			if(i == 4) {
				boton_comenzar.setAlignmentX(Component.CENTER_ALIGNMENT);
				paneles[i].setLayout(new BoxLayout(paneles[i], BoxLayout.PAGE_AXIS));
				paneles[i].add(Box.createVerticalGlue());
				paneles[i].add(boton_comenzar);
				paneles[i].add(Box.createVerticalGlue());
			}
			add(paneles[i]);
		}
		
	}
	
	private class comenzar_action implements ActionListener{

		
		public void actionPerformed(ActionEvent e) {
			imagen= new ImageIcon("img/loading1.gif");
			pc=new PantallaCargando(imagen);
			pc.setLocationRelativeTo(paneles[2]);
			pc.setVisible(true);
			JOptionPane jo=new JOptionPane();
			JOptionPane.showMessageDialog(null, MensajesValidacion.MENSAJE_DATOS);
			Medicion medir = new Medicion();
			boolean errorMedicion = false;
			try {
				medir.tomarMedicion();
			} catch (Exception e1) {
				JOptionPane.showMessageDialog(null, MensajesValidacion.MENSAJE_ERROR_TOMA_DATOS);
				errorMedicion = true;
			}

			if (!errorMedicion){
				adq.empezar_adquisicion_muestras();
				electro = adq.da_electro();
				paneles[1].add(new Graficador_Electro(electro,1));
				paneles[1].revalidate();
								
				paneles[2].add(new Graficador_Electro(electro,2));

				paneles[2].revalidate();

				paneles[3].add(new Graficador_Electro(electro,3));

				paneles[3].revalidate();
				
				pc.setVisible(false);
			}
		}
		
	}
	
	public Electrocardiograma getElectro(){
		return electro;
	}
	
}
